//🧊组织所有模块,注入所有providers,传递给Nest构建应用

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PersonModule } from './person/person.module';


//0:35
//应用程序根模块(差不多是BOSS的职位了)
//模块就是一个声明了装饰器@Module()的类。装饰器@Module()提供了元数据，以便让Nest组织应用程序结构。
//强烈建议将模块作为组织组件的有效方法。
//因此，对于大多数应用程序，生成的体系结构将使用多个模块，每个模块封装一组密切相关的功能。
//晚安🛏️🌆🌙✨

@Module({
  //指令 nest g 生成 
  //TODO: nest g 生成的文件自定义
  
  imports: [PersonModule],

  //默认生成
  controllers: [AppController],  //只能被注入
  providers: [                   //可以被注入,也可以注入别的对象

    AppService,                  //注入了一个service类,等同于{provide: 'AppService',useClass: AppService}
    
    {
      provide: 'newking',        //注入的token
      useValue: {                //不仅可以注入class,也可以注入值(基础类型/复杂类型)
        name : "zjh",
      },
    },

    {
      provide: 'newfactory',     //注入工厂函数
      useFactory(){
        return{
          age: 666
      }
    }

  }],       
})
export class AppModule {}
